package zouran.filepractice.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.io.File;

/**
 * 删除文件
 * Author：zouran
 * Date：2023/4/29  22:02
 */
@RestController
@RequestMapping("/delete")
public class DeleteFile {
    /**
     *单个文件
     * eg:
     * fileUrl:D:\study\1.png
     */
    @RequestMapping("file")
    public String deleteFile(@RequestParam("fileUrl") String fileUrl){
        File file=new File(fileUrl);
        if(!file.isFile()||!file.exists())
            return "not exists!";
        if(!file.delete())
          return "error";
        return "success";
    }
    /**
     *文件夹
     * eg
     * fileUrl:D:\study\2023\
     */
    @RequestMapping("files")
    public String deleteDirectory( @RequestParam("fileUrl")String fileUrl){
        //如果sPath不以文件分隔符结尾，自动添加文件分隔符
        if (!fileUrl.endsWith(File.separator)) {
            fileUrl = fileUrl + File.separator;
        }
        return deleteFiles(fileUrl)?"success!":"error";
    }
    public boolean deleteFiles(String fileUrl){
        File file=new File(fileUrl);
        //不是文件夹或者文件夹不存在
        if(!file.isDirectory()||!file.exists()){
            return false;
        }
        //获取当前文件夹下所有文件
        File[] files=file.listFiles();
        if (files != null) {
            //遍历文件
            for (File file1 : files) {
                //若是文件夹，递归
                if(file1.isDirectory())
                    deleteFiles(file1.getAbsolutePath());
                //删除空文件夹或文件
                 if(!file1.delete())
                     return false;
            }
        }
        return file.delete();
    }
}

